package com.xd.Mapper;
import com.xd.Dto.IFSelectProductDto;
import com.xd.Dto.PageQueryDTOBase;
import com.xd.Dto.ProductDto;
import com.xd.Dto.ProductPageQueryDTO;
import com.github.pagehelper.Page;
import com.xd.vo.ProductQueryParamVo;
import com.xd.vo.productVo;
import com.xd.Entity.ProductEntity;
import com.xd.Entity.ProductUnit;
import com.xd.vo.updateStatusVo;
import org.apache.ibatis.annotations.Delete;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;

import java.util.List;

@Mapper
public interface ProductMapper {
    /**
     * 分页查询获得商品信息
     * @param productPageQueryDTO
     * @return
     */
    Page<ProductEntity> pageHelper(ProductPageQueryDTO productPageQueryDTO);

    /**
     * 更新商品信息
     * @param productVo
     */
     void update(productVo productVo);

    /**
     * 增加商品信息
     * @param productDto
     */

     void addProductMapper(ProductDto productDto);

    /**
     * 分页查询获得商品单位信息
     * @param productPageQueryDTO
     * @return
     */
    Page<ProductUnit> getProductUnit(ProductPageQueryDTO productPageQueryDTO);

    /**
     * 分页查询获得商品分类信息
     * @param
     * @return
     */
    Page<ProductUnit> getCatergory(PageQueryDTOBase productQueryDTO);

    /**
     * 分页查询获得商品品牌信息
     * @param productQueryDTO
     * @return
     */
    Page<ProductUnit> getBrand(PageQueryDTOBase productQueryDTO);

    /**
     * 根据，商品品牌校验
     * @return
     */
    @Select("select *from xd_admin_product_brand where Id=#{id}")
    ProductEntity selectBrandById (Integer id);
    /**
     * 根据，商品分类校验
     * @return
     */
    @Select("select *from xd_admin_product_catergory where Id=#{id}")
    ProductEntity selectCatergoryById (Integer id);
    /**
     * 根据，商品单位校验
     * @return
     */
    @Select("select *from xd_admin_product_ton where Id=#{id}")
    ProductEntity selectUnitById (Integer id);

    /**
     * 根据商品id删除某个商品
     */
    @Delete("DELETE FROM xd_admin_product WHERE Id = #{id}")
    void deleteProductById(Integer id);

      List<ProductEntity> queryProducts(IFSelectProductDto ifSelectProductDto);


    /**
     * 根据商品id更改商品状态
     * @param
     * @param
     */
    void updateProductStatusMapper(updateStatusVo updateStatusVo);

}
